# -*- coding: utf-8 -*-
#   字符、数据类型方面的方法
# @Time    ： 2025/11/14  00:35
# @Auther  ： 徐良
# File     :  strFunction.py
# -*- coding: utf-8 -*-
# 处理字符串、数字转换等基础函数
# @Time    ：2024/4/9 10:23
# @Author  ：徐良
# @File    ：baseFunction.py

from PySide6.QtCore import QDate, QTime, QDateTime
from typing import Any, Optional, List


def quote(string: str) -> str:
    """
    返回带单引号的字符串。

    Args:
        string (str): 输入的字符串。

    Returns:
        str: 加了单引号的字符串，例如 `'abc'`。
    """
    # 使用 format 或 f-string 为字符串添加单引号
    return "'{}'".format(string)

def get_instance_type(obj: Any) -> Optional[str]:
    """
    返回对象的类型名称（支持常见 Python 与 Qt 类型）。

    Args:
        obj (Any): 任意对象。

    Returns:
        Optional[str]: 类型名称，如 'int', 'str', 'QDateTime'，不匹配时返回 None。
    """
    if isinstance(obj, int):
        return 'int'
    elif isinstance(obj, str):
        return 'str'
    elif isinstance(obj, float):
        return 'float'
    elif isinstance(obj, QDate):
        return 'QDate'
    elif isinstance(obj, QTime):
        return 'QTime'
    elif isinstance(obj, QDateTime):
        return 'QDateTime'
    else:
        return None

def get_list_from_str_by_pipe(ss: Optional[str]) -> List[str]:
    """
    将以竖线 `|` 分隔的字符串转换为字符串列表，并清除特殊字符。

    Args:
        ss (Optional[str]): 输入字符串，如 `"a|b|c"`。支持 None。

    Returns:
        List[str]: 结果列表，如 `["a", "b", "c"]`。
    """
    if not ss:
        return []

    # 清除特殊符号后分割
    cleaned = ss.replace('#', '').replace('\n', '').replace('*', '').strip()
    return [item.strip() for item in cleaned.split('|') if item.strip()]

